package com.example.smartwaterapi.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.smartwaterapi.entity.UserAchievement;

import java.util.List;
import java.util.concurrent.CompletableFuture;

/**
 * 用户成就服务接口
 */
public interface UserAchievementService extends IService<UserAchievement> {

    /**
     * 获取用户所有成就
     * @param userId 用户ID
     * @return 用户成就列表
     */
    List<UserAchievement> getUserAchievements(Long userId);
    
    /**
     * 分页获取用户成就
     * @param userId 用户ID
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 用户成就分页结果
     */
    Page<UserAchievement> getUserAchievementsPage(Long userId, Integer pageNum, Integer pageSize);
    
    /**
     * 异步检查用户成就
     * @param userId 用户ID
     * @return 新增成就列表
     */
    CompletableFuture<List<UserAchievement>> checkUserAchievementsAsync(Long userId);
    
    /**
     * 批量处理用户成就
     * @param userIds 用户ID列表
     * @return 处理结果
     */
    boolean batchProcessUserAchievements(List<Long> userIds);

}